/**
 * Description:
 * Class Name:LittleTest
 * Date:2022/4/23 13:15
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第14章_Annotation注解._14_1_基本注解._14_1_4_堆污染警告与Java9增强的SafeVarargs;

import java.util.ArrayList;
import java.util.List;

public class LittleTest {
    public static void main(String[] args) {
        List list = new ArrayList<Integer>();	// 把带泛型的变量赋给不带泛型的变量时，发生泛型擦除——泛型类型没有指定具体类型，用Object作为原始类型；
        list.add(20);							// 添加元素会引发unchecked异常
        List<String> ls = list;					// 当把不带泛型的变量赋给带泛型的变量时，或者说用带类型参数的泛型声明时，就容易发生堆污染
        // 但只要访问ls里的元素，就会引起运行时异常，发生了堆污染，因为List<String>引用的对象不是List<String>的
        System.out.println(ls.get(0));
        /*
        堆污染也就是——参数化类型变量（也叫泛型变量）引用的对象不是该参数化类型的对象
         */
    }
}
